@@ -3,14 +3,14 @@ module Agents |
||
3 | 3 |
cannot_be_scheduled! |
4 | 4 |
cannot_create_events! |
5 | 5 |
|
6 |
- @@api_url = 'https://api.pushover.net/1/messages.json' |
|
6 |
+ API_URL = 'https://api.pushover.net/1/messages.json' |
|
7 | 7 |
|
8 | 8 |
description <<-MD |
9 | 9 |
The PushoverAgent receives and collects events and sends them via push notification to a user/group. |
10 | 10 |
|
11 | 11 |
**You need a Pushover API Token:** [https://pushover.net/apps/build](https://pushover.net/apps/build) |
12 | 12 |
|
13 |
- **Your event must provide** a `message` or `text` key that will contain the body of the notification. Pushover API has a `512` Character Limit including `title`. `message` will be truncated. |
|
13 |
+ **You must provide** a `message` or `text` key that will contain the body of the notification. This can come from an event or be set as a default. Pushover API has a `512` Character Limit including `title`. `message` will be truncated. |
|
14 | 14 |
|
15 | 15 |
* `token`: your application's API token |
16 | 16 |
* `user`: the user or group key (not e-mail address). |
@@ -37,6 +37,7 @@ module Agents |
||
37 | 37 |
{ |
38 | 38 |
'token' => 'vKxxxxxxxxxxxxxxxxxxxxxxxxxxxx', |
39 | 39 |
'user' => 'Fjxxxxxxxxxxxxxxxxxxxxxxxxxxxx', |
40 |
+ 'message' => 'a default message', |
|
40 | 41 |
'device' => '', |
41 | 42 |
'title' => '', |
42 | 43 |
'url' => '', |
@@ -50,15 +51,15 @@ module Agents |
||
50 | 51 |
end |
51 | 52 |
|
52 | 53 |
def validate_options |
53 |
- unless options['token'].present? && options['user'].present? && options['expected_receive_period_in_days'].present? |
|
54 |
- errors.add(:base, 'token, user, and expected_receive_period_in_days are all required.') |
|
54 |
+ unless options['token'].present? && options['user'].present? && options['message'].present? && options['expected_receive_period_in_days'].present? |
|
55 |
+ errors.add(:base, 'token, user, message, and expected_receive_period_in_days are all required.') |
|
55 | 56 |
end |
56 | 57 |
end |
57 | 58 |
|
58 | 59 |
def receive(incoming_events) |
59 | 60 |
incoming_events.each do |event| |
60 |
- message = (event.payload['message'] || event.payload['text']).to_s |
|
61 |
- if message != "" |
|
61 |
+ message = (event.payload['message'] || event.payload['text'] || options['message']).to_s |
|
62 |
+ if message.present? |
|
62 | 63 |
post_params = { |
63 | 64 |
'token' => options['token'], |
64 | 65 |
'user' => options['user'], |
@@ -98,7 +99,7 @@ module Agents |
||
98 | 99 |
end |
99 | 100 |
|
100 | 101 |
def send_notification(post_params) |
101 |
- response = HTTParty.post(@@api_url, :query => post_params) |
|
102 |
+ response = HTTParty.post(API_URL, :query => post_params) |
|
102 | 103 |
puts response |
103 | 104 |
end |
104 | 105 |
|
@@ -5,6 +5,7 @@ describe Agents::PushoverAgent do |
||
5 | 5 |
@checker = Agents::PushoverAgent.new(:name => 'Some Name', |
6 | 6 |
:options => { :token => 'x', |
7 | 7 |
:user => 'x', |
8 |
+ :message => 'Some Message', |
|
8 | 9 |
:device => 'Some Device', |
9 | 10 |
:title => 'Some Message Title', |
10 | 11 |
:url => 'http://someurl.com', |
@@ -46,6 +47,26 @@ describe Agents::PushoverAgent do |
||
46 | 47 |
@sent_notifications[2]['message'].should == 'Some other message' |
47 | 48 |
end |
48 | 49 |
|
50 |
+ it 'should make sure event message overrides default message' do |
|
51 |
+ event = Event.new |
|
52 |
+ event.agent = agents(:bob_rain_notifier_agent) |
|
53 |
+ event.payload = { :message => 'Some new message'} |
|
54 |
+ event.save! |
|
55 |
+ |
|
56 |
+ @checker.receive([event]) |
|
57 |
+ @sent_notifications[0]['message'].should == 'Some new message' |
|
58 |
+ end |
|
59 |
+ |
|
60 |
+ it 'should make sure event text overrides default message' do |
|
61 |
+ event = Event.new |
|
62 |
+ event.agent = agents(:bob_rain_notifier_agent) |
|
63 |
+ event.payload = { :text => 'Some new text'} |
|
64 |
+ event.save! |
|
65 |
+ |
|
66 |
+ @checker.receive([event]) |
|
67 |
+ @sent_notifications[0]['message'].should == 'Some new text' |
|
68 |
+ end |
|
69 |
+ |
|
49 | 70 |
it 'should make sure event title overrides default title' do |
50 | 71 |
event = Event.new |
51 | 72 |
event.agent = agents(:bob_rain_notifier_agent) |
@@ -158,6 +179,11 @@ describe Agents::PushoverAgent do |
||
158 | 179 |
@checker.should_not be_valid |
159 | 180 |
end |
160 | 181 |
|
182 |
+ it "should validate presence of message" do |
|
183 |
+ @checker.options[:message] = "" |
|
184 |
+ @checker.should_not be_valid |
|
185 |
+ end |
|
186 |
+ |
|
161 | 187 |
it "should validate presence of expected_receive_period_in_days" do |
162 | 188 |
@checker.options[:expected_receive_period_in_days] = "" |
163 | 189 |
@checker.should_not be_valid |